package model.entity;

import java.util.ArrayList;
import java.util.List;

import model.entity.stats.StatSet;
import model.item.EquippedInventory;
import model.item.Inventory;
import model.map.Direction;
import model.map.Location;
import model.map.MovementType;
import utilities.*;

/**
 * 
 * This is the Entity in which the 
 * player manuvers and controls.
 * 
 */

public class Avatar extends Entity implements Archiveable {

	// the default spawning location for the avatar (for when he loses a life)
	//private Location defaultLocation = new Location(5,5);


	public Avatar(String name, Direction direction, Location location, StatSet stats, 
			List<MovementType> movementTypes, Inventory inventory, 
			EquippedInventory equipment, Occupation occupation, Boolean sleeping){

		super(name, direction, location, stats, 
				movementTypes, inventory, 
				equipment, occupation, sleeping);
	}
	//Needed for Debugging
	public Avatar(StatSet stats, Inventory inventory) {
		super("afd", Direction.E, new Location(5, 5), stats, 
				new ArrayList<MovementType>(), inventory, 
				new EquippedInventory(), new Occupation(), false);
		this.stats = stats;
	}

	public Avatar(StatSet stats, Occupation occ) {
		super("afd", Direction.E, new Location(5, 5), stats, 
				new ArrayList<MovementType>(), new Inventory(), 
				new EquippedInventory(), occ, false);
		this.stats = stats;
	}
	
	public Avatar() {
		
	}
	
	public Archive save() {
		Archive archive = super.save();
		
		return archive;
	}
	
	public void load(Archive archive) {
		super.load(archive);
	}

}
